package com.ss.android.article.base.feature.video;

import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;

import com.ss.android.article.base.feature.detail2.DetailPageListener;
import com.ss.android.article.base.feature.model.Article;
import com.ss.android.article.base.feature.model.CellRef;
import com.ss.android.common.callback.CallbackCenter;

import java.util.EnumSet;
import java.util.List;

import org.json.JSONObject;

public interface IVideoController {
    public interface ICloseListener {
        void onClose(boolean arg1);
    }

    public interface IPlayCompleteListener {
        void onItemShare(int channel);

        void onReplay();

        void onShare();
    }

    public interface IShareListener {
        void onFullScreenMoreClick();

        void onTopMoreClick();
    }

    public interface ISplashAdListener {
        void onComplete(long arg1, int arg2);

        void onError(long arg1, int arg2);

        void onSkip(long arg1, int arg2);

        void onTimeOut();

        void onVideoClick(long arg1, int arg2);
    }

    public interface IThirdPartnerListner {
        void onClick();

        void onShowEvent(String arg1);
    }

    public static final int AUTO_PLAY_IN_FEED_FULLSCREEN = 303;
    public static final int AUTO_PLAY_IN_FEED_NORMAL = 302;
    public static final CallbackCenter.TYPE RESHOW_END_COVER = new CallbackCenter.TYPE("auto_play_next_reshow_end_cover");
    public static final CallbackCenter.TYPE STOP_END_COVER = new CallbackCenter.TYPE("auto_play_next_stop_end_cover");
    public static final int TOAST_INFO_VIDEO_ADDRESS_FAIL = -976;
    public static final int TOAST_INFO_VIDEO_API_FAIL = -980;
    public static final int TOAST_INFO_VIDEO_EMPTY_RESPONSE = -979;
    public static final int TOAST_INFO_VIDEO_FETCH_URL_FAIL = -978;
    public static final int TOAST_INFO_VIDEO_MOBILE_CODEC_ERROR = -975;
    public static final int TOAST_INFO_VIDEO_NETWORK_UNAVAILABLE = -977;
    public static final int TOAST_INFO_VIDEO_TIME_OUT = -981;

    boolean backPress(Activity activity);

    void clearOnCloseListener();

    void continuePlay(boolean arg1);

    void dismiss(boolean arg1);

    Object getBindedTag();

    String getCategory();

    int getContainerHeight();

    Context getContext();

    String getCurrentLabel();

    long getCurrentPlayPosition();

    DetailPageListener getDetailPageListener();

    IMediaLayout getMediaViewLayout();

    int getPct();

    String getVideoId();

    void handleFullScreenBackClick(IMediaLayout arg1, View arg2, boolean arg3);

    void handleOrientationChanged(int arg1);

    void handlePatchRootViewClick();

    void reset(Context arg1, ViewGroup videoHolder, boolean arg3, EnumSet arg4);

    boolean isActivityOnDestroy();

    boolean isDirectPlay();

    boolean isFullScreen();

    boolean isPatchVideo();

    boolean isPauseFromList();

    boolean isVideoPaused();

    boolean isVideoPlaybackCompleted();

    boolean isVideoPlaying();

    boolean isVideoVisible();

    void onActivityDestroy();

    void onEnterDetailEvent();

    void pauseAtList();

    void pauseVideo();

    boolean play(String arg1, String arg2, String arg3,
                 long arg4, Article arg5, String arg6,
                 int arg7, int arg8, int arg9, List<String> trackUrlList,
                 long arg11, String arg12, boolean arg13,
                 String arg14, boolean arg15, String arg16,
                 JSONObject arg17);

    boolean play(String url, String categoryName, String title,
                 long adId, Article article, String videoId,
                 int sp, int videoWidth, int videoHeight, List<String> trackUrlList,
                 long lastPos, String arg12, boolean isDirectPlay,
                 String externalUrl, String logextra, JSONObject arg16);

    boolean play(CellRef cellRef, int arg2, int arg3, View arg4, View arg5, boolean arg6);

    boolean playSplashUrl(String arg1, String arg2, String arg3, String arg4,
                          long arg5, int arg6, int arg7, List<String> trackUrlList,
                          String arg9, String arg10, int arg11,
                          boolean arg12, boolean arg13);

    void releaseMedia();

    void releaseMediaFromSplash(boolean arg1, int arg2);

    void releaseWhenOnPause();

    void releaseWithMiniVideo(boolean arg1);

    void resumeMedia(View coverImageIv, View videoContainer);

    void resumeVideo();

    void setActivityOnDestroy(boolean arg1);

    void setBindedTag(Object bindedTag);

    void setDetailPageListener(DetailPageListener arg1);

    void setFullScreenListener(IVideoFullscreen arg1);

    void setOnCloseListener(ICloseListener closeListener);

    void setPlayCompleteListener(IPlayCompleteListener playCompleteListener);

    void setShareListener(IShareListener shareListener);

    void setSplashAdListener(ISplashAdListener splashAdListener);

    void showAdGoLanding(String arg1);

    boolean showBackwardVideo(Article article, long arg2, String arg3, int arg4, int arg5, String arg6, String arg7, long arg8, String arg9);

    void showNewCover(Article article);

    void showThirdPartnerGuide(ThirdVideoPartnerData thirdVideoPartnerData, IThirdPartnerListner thirdPartnerListner);

    void stopAutoPlayAnimation();

    void syncPosition(boolean arg1);

    void unRegisterReceiver();
}

